<?php
/**
 * В этом файле описываются сигналы, url и подключения (слоты) за которые отвечает AGPsource Game Class Library
 * В следующей версии добавиться еще один менеджер сигналов (game_) специфичных для конкретной игры
 */

class AGPsource_connectManager
{
	static $prefix = array('agp_'); //префикс для сигналов из AGPsource Game Class Library
	
	
	/**
	 * Возвращает массив роутинга URL на сигналы для подключения к основному.
	 * @return Array
	 */
	static public function exportRouting()
	{
		return Array(
			//запрашивает страницу с формой авторизации
			'game/customer/getauthform/html' => array('sys_templates', 'agp_customer_auth_form_render'),
			//обработка авторизации (основной сигнал, дальше он сам генерирует промежуточные сигныл)
			'game/customer/auth' => array('sys_security_ids_check','agp_customer_auth_check')		
		
		
		);
	}
	
	
	
	
	
	
	
	//только одна функция, которая определяет, кто из игровых дочерних классов отвечает за сигнал	
	static public function signalManager($signal = null, $router = null )
	{
		if ( (empty($signal)) || (empty($router)) || (!is_object($router)) ) return false;
		else
			{
				//допустим, у нас сигнал agp_test_signal
				// $router->connect($signal, $connector);
				// return true; //обязательно вернуть true если нашли сигнал и false, если нет
				switch ($signal) 
				{
					//рендеринг страницы с авторизацией или получение формы
					case "agp_customer_auth_form_render":
						$router->connect($signal, array('AGPsource_User_Customer', 'renderAuthForm'));
						break;
						
					//вход в систему проверки авторизации
					case "agp_customer_auth_check":
						$router->connect($signal, array('AGPsource_User_Customer', 'authFormCheck'));
						break;
						
					//стандартное сообщение об ошибке
					case "agp_customer_auth_FAILURE":
						$router->connect($signal, array('AGPsource_User_Customer', 'authProcessFAILURE'));
						break;	
					
					//внутренний сигнал для валидации пары логин/пароль
					case "agp_customer_validate_account":
						$router->connect($signal, array('AGPsource_User_Customer', 'authValidateAccount'));
						break;	
					
						
						
					
					
					//странно, неизвестный сигнал :)
					default: throw new AGPlatform_Unknown_Signal_Exception();
				}
			
			}
	}
	
	/**
	 * ACL constructor
	 * @see http://framework.zend.com/manual/ru/zend.acl.html
	 * @return 
	 * @param object $acl[optional]
	 */
	static public function exportACL($acl = null)
	{
		if ((!is_object($acl)) || (empty($acl))) return false;
		else
		{
			//write your acl rule and define all
			//!INFO: Обязательно документируйте все свои роли и ресурсы, лучше всего с использованием префиксов
		}
	}
}
